<?php
/**
 * Created by PhpStorm.
 * User: guozhen
 * Date: 16/9/20
 * Time: 下午5:33
 */
namespace extension;
class Main{

    static public function log_write($message)
    {
        $now = date("H:i:s");
        if (Crontab::$daemon) {
            $destination = Crontab::$log_path . "log_" . date("Y-m-d") . ".log";
            error_log("{$now} : {$message}\r\n", 3, $destination, '');
        }
        echo "{$now} : {$message}\r\n";
    }

    static public function log_write_pre($message,$path,$level=3){
        $config = parse_ini_file("../conf/config.ini", true);

        $now = date("Y-m-d H:i:s");
        error_log("{$now} : {$message}\r\n", $level, $config['log'][$path], '');
        echo "{$now} : {$message}\r\n";
    }

    /**
     * 运行入口
     */
    static public function run($opt)
    {
        self::params_d($opt);  //解析运行模式参数
        self::params_p($opt);  //解析pid参数
        self::params_l($opt);  //解析日志路径参数
        self::params_c($opt);  //解析配置文件位置参数
        Crontab::start();
    }

    /**
     * 解析运行模式参数
     * @param $opt
     */
    static public function params_d($opt)
    {
        Crontab::$daemon = true;
    }

    /**
     * 解析pid参数
     * @param $opt
     */
    static public function params_p($opt)
    {
        Crontab::$pid_file = ROOT_PATH . "/pid";
    }

    /**
     * 解析日志路径参数
     * @param $opt
     */
    static public function params_l($opt)
    {
        Crontab::$log_path = ROOT_PATH . "/logs/";
    }

    /**
     * 解析配置文件位置参数
     * @param $opt
     */
    static public function params_c($opt)
    {
        Crontab::$taskParams = ROOT_PATH . "conf/crontab.php";
    }

    /**
     * 重新载入配置文件
     * @param $opt
     */
    static public function params_r($opt)
    {
        if (isset($opt["r"]) || isset($opt["reload"])) {
            $pid = @file_get_contents(Crontab::$pid_file);
            if ($pid) {
                if (swoole_process::kill($pid, 0)) {
                    swoole_process::kill($pid, SIGUSR1);
                    Main::log_write("对 {$pid} 发送了从新载入配置文件的信号");
                    exit;
                }
            }
            Main::log_write("进程" . $pid . "不存在");
        }
    }


}

